This slightly simplify code and frees a pte bit.
Signed-off-by: Tristan Gingold <tgingold@free.fr>
/* Check area is currently unassigned. */
for (i = start; i < start + size; i += PAGE_SIZE) {
- unsigned long mpa = ____lookup_domain_mpa(d, i);
- if (mpa != GPFN_INV_MASK && mpa != INVALID_MFN)
+ if (____lookup_domain_mpa(d, i) != INVALID_MFN)
return -EBUSY;
}
if (pte_present(*pte))
return (pte->pte & _PFN_MASK);
- else if (VMX_DOMAIN(d->vcpu[0]))
- return GPFN_INV_MASK;
return INVALID_MFN;
}
if (entry != NULL)
p2m_entry_set(entry, pte, tmp_pte);
return pte_val(tmp_pte);
- } else if (VMX_DOMAIN(d->vcpu[0]))
- return GPFN_INV_MASK;
+ } else if (is_hvm_domain(d))
+ return INVALID_MFN;
}
if (mpaddr < d->arch.convmem_end && !d->is_dying) {
}
/* This hypercall is used for VT-i domain only */
- if (!VMX_DOMAIN(d->vcpu[0])) {
+ if (!is_hvm_domain(d)) {
rcu_unlock_domain(d);
return -ENOSYS;
}
#define GPFN_HIGH_MMIO (7UL << 60) /* High MMIO range */
#define GPFN_IO_MASK (7UL << 60) /* Guest pfn is I/O type */
-#define GPFN_INV_MASK (1UL << 63) /* Guest pfn is invalid */
#else
#define _PAGE_PROTNONE (__IA64_UL(1) << 63)
#define pte_file(pte) ((pte_val(pte) & _PAGE_FILE) != 0)
#ifdef XEN
#define pte_pgc_allocated(pte) ((pte_val(pte) & _PAGE_PGC_ALLOCATED) != 0)
-#define pte_mem(pte) \
- (!(pte_val(pte) & (GPFN_IO_MASK | GPFN_INV_MASK)) && !pte_none(pte))
+#define pte_mem(pte) (!(pte_val(pte) & GPFN_IO_MASK) && !pte_none(pte))
#endif
/*
* Note: we convert AR_RWX to AR_RX and AR_RW to AR_R by clearing the 2nd bit in the
gmfn_to_mfn_foreign((_d), (gpfn))
#define __gpfn_invalid(_d, gpfn) \
- (lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT), NULL) & GPFN_INV_MASK)
+ (lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT), NULL) == INVALID_MFN)
#define __gmfn_valid(_d, gpfn) !__gpfn_invalid(_d, gpfn)
({ \
u64 pte, ret=0; \
pte = lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT), NULL); \
- if(!(pte&GPFN_INV_MASK)) \
- ret = pte & GPFN_IO_MASK; \
+ ret = (pte != INVALID_MFN) ? pte & GPFN_IO_MASK : 0; \
ret; \
})
({ \
u64 pte, ret=0; \
pte = lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT), NULL); \
- if((!(pte&GPFN_INV_MASK))&&((pte & GPFN_IO_MASK)==GPFN_MEM)) \
- ret = 1; \
+ ret = (pte != INVALID_MFN) && (pte & GPFN_IO_MASK) == GPFN_MEM; \
ret; \
})